home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / workbench / directoryopus4 / dopus4_src / config / data.c < prev    next >
C/C++ Source or Header  |  2000-03-11  |  19KB  |  568 lines

  1. /*
  2.  
  3. Directory Opus 4
  4. Original GPL release version 4.12
  5. Copyright 1993-2000 Jonathan Potter
  6.  
  7. This program is free software; you can redistribute it and/or
  8. modify it under the terms of the GNU General Public License
  9. as published by the Free Software Foundation; either version 2
  10. of the License, or (at your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  20.  
  21. All users of Directory Opus 4 (including versions distributed
  22. under the GPL) are entitled to upgrade to the latest version of
  23. Directory Opus version 5 at a reduced price. Please see
  24. http://www.gpsoft.com.au for more information.
  25.  
  26. The release of Directory Opus 4 under the GPL in NO WAY affects
  27. the existing commercial status of Directory Opus 5.
  28.  
  29. */
  30.  
  31. #include "config.h"
  32.  
  33. char *version="$VER: ConfigOpus 4.12 (4 Mar 2000) recompiled under GPL license by Jacek Rzeuski";
  34.  
  35. UWORD drawinfo[]={
  36.     0, /* DETAILPEN */
  37.     1, /* BLOCKPEN */
  38.     1, /* TEXTPEN */
  39.     2, /* SHINEPEN */
  40.     1, /* SHADOWPEN */
  41.     3, /* FILLPEN */
  42.     1, /* FILLTEXTPEN */
  43.     0, /* BACKGROUNDPEN */
  44.     3, /* HIGHLIGHTTEXTPEN */
  45.     1, /* BARDETAILPEN */
  46.     2, /* BARBLOCKPEN */
  47.     1, /* BARTRIMPEN */
  48.     (UWORD)~0};
  49.  
  50. struct TagItem
  51.     taglist[]={
  52.         {SA_Pens,(ULONG)drawinfo},
  53.         {TAG_END,0}};
  54.  
  55. struct ExtNewScreen configscr={
  56.     0,0,640,210,0,0,1,
  57.     HIRES,CUSTOMSCREEN|SCREENBEHIND|NS_EXTENDED,
  58.     &sfont,"ConfigOpus 4.12",NULL,NULL,taglist};
  59.  
  60. struct NewWindow
  61.     configwin={
  62.         0,11,640,0,
  63.         255,255,
  64.         IDCMP_MOUSEBUTTONS|IDCMP_GADGETUP|IDCMP_GADGETDOWN|IDCMP_MENUPICK|
  65.             IDCMP_MOUSEMOVE|IDCMP_INACTIVEWINDOW|IDCMP_RAWKEY,
  66.         WFLG_ACTIVATE|WFLG_REPORTMOUSE|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_NEWLOOKMENUS,
  67.         NULL,NULL,
  68.         NULL,
  69.         NULL,NULL,
  70.         0,0,0,0,
  71.         CUSTOMSCREEN};
  72.  
  73. struct DOpusBase *DOpusBase;
  74. struct GfxBase *GfxBase = NULL;
  75. struct Library *LayersBase = NULL;
  76. struct IntuitionBase *IntuitionBase;
  77. struct Library *DiskfontBase = NULL;
  78. struct Library *WorkbenchBase = NULL;
  79. struct Library *IconBase = NULL;
  80. struct PPBase *PPBase = NULL;
  81. struct Screen *Screen;
  82. struct Window *Window;
  83. struct ViewPort *vp;
  84. struct RastPort *rp;
  85. struct Process *myproc;
  86. struct IntuiMessage *IMsg;
  87. APTR wsave,realwsave;
  88. char *spacestring="                                                                                                                                                      ";
  89.  
  90. char fontbuf[50];
  91. struct TextAttr
  92.     sfont={(STRPTR)fontbuf,8,0,0},
  93.     bsfont={(STRPTR)fontbuf,8,FSF_BOLD,0};
  94. struct Config *config,*undoconfig;
  95. struct dopusfiletype *firsttype;
  96. struct dopushotkey *firsthotkey;
  97. struct dopusgadgetbanks *firstbank,*curbank;
  98. struct DOpusRemember *typekey,*fontkey;
  99.  
  100. char configname[256],loadnamebuf[256];
  101.  
  102. int version2;
  103.  
  104. struct MsgPort *conport,*cmdport,*appport;
  105. /*
  106. struct MsgPort **clip_port;
  107. struct IOClipReq *clip_io;
  108. */
  109. struct ConfigStuff cstuff;
  110. struct DOpusRemember *mainkey,*gadgetkey,*tickkey,*screenkey,*clipkey,*buttonkey;
  111. struct Gadget *maingad,*tickgad,*gadgads,*menugads,*drivegads;
  112. struct Clip *firstclip;
  113. int tickcount;
  114. struct dopusconfigmsg msg;
  115.  
  116. int lchanged,changed;
  117.  
  118. struct Image
  119.     *checkonimage,*checkoffimage,
  120.     *buttononimage,*buttonoffimage,
  121.     copy_checkonimage,copy_checkoffimage;
  122.  
  123. struct RMBGadget
  124.     insertbankrmb={
  125.         NULL,0,0,104,12,RGF_ALTTEXT,1,
  126.         {{NULL,2,1,100,10,1,0},{NULL,2,1,100,10,1,0}}},
  127.     nextbankrmb={
  128.         &insertbankrmb,0,0,104,12,RGF_ALTTEXT,0,
  129.         {{NULL,2,1,100,10,1,0},{NULL,2,1,100,10,1,0}}},
  130.     formatclearrmb={
  131.         NULL,465,137,104,12,RGF_ALTTEXT,0,
  132.         {{NULL,2,1,100,10,1,0},{NULL,2,1,100,10,1,0}}},
  133.     sampleclearrmb={
  134.         NULL,0,0,104,12,RGF_ALTTEXT,0,
  135.         {{NULL,2,1,100,10,1,0},{NULL,2,1,100,10,1,0}}};
  136.  
  137. char
  138.     *commandlist[95],
  139.     *arglist[18],
  140.     *classopslist[12];
  141.  
  142. int classopvals[]={
  143.     FTYC_AND,FTYC_MATCH,FTYC_MATCHBITS,FTYC_MATCHCOMMENT,FTYC_MATCHDATE,
  144.     FTYC_MATCHNAME,FTYC_MATCHSIZE,FTYC_MOVE,FTYC_MOVETO,FTYC_OR,FTYC_SEARCHFOR};
  145.  
  146. struct DOpusListView
  147.     cmdlist={
  148.         1,NULL,0,0,332,88,NULL,commandlist,NULL,DLVF_HIREC,8,
  149.         0,0,0,0,0,0,0,0,0,0,-1,NULL},
  150.     listlist={
  151.         1,NULL,0,0,0,0,NULL,NULL,NULL,DLVF_HIREC,8,
  152.         0,0,0,0,0,0,0,0,0,0,-1,NULL},
  153.     helplist={
  154.         1,NULL,0,0,516,131,NULL,NULL,NULL,DLVF_HIREC,8,
  155.         0,0,0,0,0,0,0,0,0,0,-1,NULL},
  156.     modulelist={
  157.         5,NULL,0,0,338,56,NULL,NULL,NULL,
  158.         DLVF_MULTI|DLVF_TTOP|DLVF_CHECK|DLVF_HIREC,8,0,0,0,0,0,0,0,0,0,0,-1,&languagelist},
  159.     languagelist={
  160.         6,NULL,0,0,338,56,NULL,NULL,NULL,
  161.         DLVF_CHECK|DLVF_LEAVE|DLVF_TTOP|DLVF_HIREC,8,0,0,0,0,0,0,0,0,0,0,-1,NULL};
  162.  
  163. char *external_module_list[]={
  164.     "ConfigOpus",
  165.     "Diskcopy, Format, Install",
  166.     "IconInfo",
  167.     "Print, Printdir",
  168.     NULL};
  169.  
  170. char *external_module_name[]={
  171.     "ConfigOpus",
  172.     "DOpus_Disk",
  173.     "DOpus_Icon",
  174.     "DOpus_Print",
  175.     NULL};
  176.  
  177. int external_module_map[]={
  178.     65536,
  179.     1,
  180.     4,
  181.     2};
  182.  
  183. struct Gadget
  184.     cmdcancelgad={
  185.         NULL,124,102,104,12,GFLG_GADGHCOMP,GACT_RELVERIFY,GTYP_BOOLGADGET,
  186.         NULL,NULL,NULL,0,NULL,0,NULL},
  187.     helpcancelgad={
  188.         NULL,226,147,104,12,GFLG_GADGHCOMP,GACT_RELVERIFY,GTYP_BOOLGADGET,
  189.         NULL,NULL,NULL,0,NULL,0,NULL},
  190.     listokaygad[3]={
  191.         {&listokaygad[1],10,0,104,12,GFLG_GADGHCOMP,GACT_RELVERIFY,GTYP_BOOLGADGET,
  192.         NULL,NULL,NULL,0,NULL,1,NULL},
  193.         {NULL,0,0,104,12,GFLG_GADGHCOMP,GACT_RELVERIFY,GTYP_BOOLGADGET,
  194.         NULL,NULL,NULL,0,NULL,0,NULL},
  195.         {NULL,0,0,104,12,GFLG_GADGHCOMP,GACT_RELVERIFY,GTYP_BOOLGADGET,
  196.         NULL,NULL,NULL,0,NULL,2,NULL}};
  197.  
  198. struct NewWindow
  199.     requestwin={
  200.         0,0,0,0,
  201.         255,255,
  202.         IDCMP_MOUSEBUTTONS|IDCMP_GADGETUP|IDCMP_GADGETDOWN|IDCMP_MOUSEMOVE|IDCMP_VANILLAKEY,
  203.         WFLG_ACTIVATE|WFLG_RMBTRAP|WFLG_DRAGBAR|WFLG_DEPTHGADGET,
  204.         NULL,NULL,NULL,NULL,NULL,0,0,0,0,CUSTOMSCREEN};
  205.  
  206. char filebuf[32],dirbuf[258];
  207. struct DOpusFileReq filereq={
  208.     NULL,dirbuf,filebuf,NULL,162,22,10,0,NULL,NULL};
  209.  
  210. char *defdir[5]={"","SYS:","SYS:","S:","REXX:"};
  211.  
  212. struct newdopusfunction *selgad;
  213. struct Gadget *seligad;
  214.  
  215. struct ColourSel coloursel[]={
  216.     {COLBIT_STATUS,149,57,598,76},
  217.     {COLBIT_SELDISKNAME,149,77,373,86},
  218.     {COLBIT_DISKNAME,374,75,598,86},
  219.     {COLBIT_SELDIRECTORY,151,88,353,95},
  220.     {COLBIT_DIRECTORY,151,96,353,103},
  221.     {COLBIT_SELFILE,151,104,353,111},
  222.     {COLBIT_FILE,151,112,353,128},
  223.     {COLBIT_FILE,394,88,596,128},
  224.     {COLBIT_SLIDERS,356,87,391,111},
  225.     {COLBIT_SLIDERS,149,130,319,140},
  226.     {COLBIT_SLIDERS,428,130,599,140},
  227.     {COLBIT_ARROWS,320,130,352,153},
  228.     {COLBIT_ARROWS,392,130,427,153},
  229.     {COLBIT_ARROWS,356,112,391,129},
  230.     {COLBIT_TINYGADS,356,130,391,153},
  231.     {COLBIT_TINYGADS,491,153,598,162},
  232.     {COLBIT_CLOCK,149,153,490,162},
  233.     {COLBIT_3DBOXES,160,167,371,178},
  234.     {COLBIT_REQUESTER,376,167,587,178},
  235.     {COLBIT_STRINGS,149,141,319,152},
  236.     {COLBIT_SELSTRINGS,428,141,599,152},
  237.     {-1,0,0,0,0}};
  238.  
  239. char **screenmodelist;
  240. struct ScreenMode *firstmode,*screenmode;
  241.  
  242. struct Image
  243.     open_barimage={0,0,0,0,0,NULL,0,0,NULL},
  244.     paste_barimage={0,0,0,0,0,NULL,0,0,NULL},
  245.     erase_barimage={0,0,0,0,0,NULL,0,0,NULL},
  246.     deleteclass_barimage={0,0,0,0,0,NULL,0,0,NULL};
  247.  
  248. struct IntuiText
  249.     newtext={0,0,JAM1,1,1,NULL,NULL,NULL},
  250.     opentext={0,0,JAM1,1,1,NULL,NULL,NULL},
  251.     savetext={0,0,JAM1,1,1,NULL,NULL,NULL},
  252.     saveastext={0,0,JAM1,1,1,NULL,NULL,NULL},
  253.  
  254.     cuttext={0,0,JAM1,1,1,NULL,NULL,NULL},
  255.     copytext={0,0,JAM1,1,1,NULL,NULL,NULL},
  256.     pastetext={0,0,JAM1,1,1,NULL,NULL,NULL},
  257.     erasetext={0,0,JAM1,1,1,NULL,NULL,NULL},
  258.     clearcliptext={0,0,JAM1,1,1,NULL,NULL,NULL},
  259.  
  260.     newclasstext={0,0,JAM1,1,1,NULL,NULL,NULL},
  261.     editclasstext={0,0,JAM1,1,1,NULL,NULL,NULL},
  262.     duplicateclasstext={0,0,JAM1,1,1,NULL,NULL,NULL},
  263.     deleteclasstext={0,0,JAM1,1,1,NULL,NULL,NULL},
  264.     clearclasstext={0,0,JAM1,1,1,NULL,NULL,NULL},
  265.  
  266.     gadrowstext[5],
  267.  
  268.     paintmodetext={0,0,JAM1,1,1,NULL,NULL,NULL};
  269.  
  270. struct MenuItem
  271.     projectitems[]={
  272.         {&projectitems[1],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP|COMMSEQ,0,
  273.         (APTR)&newtext,NULL,'D',NULL,0xffff},
  274.         {&projectitems[2],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP|COMMSEQ,0,
  275.         (APTR)&opentext,NULL,'O',NULL,0xffff},
  276.         {&projectitems[3],0,0,0,2,HIGHNONE,0,
  277.         (APTR)&open_barimage,NULL,0,NULL,0xffff},
  278.         {&projectitems[4],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP|COMMSEQ,0,
  279.         (APTR)&savetext,NULL,'S',NULL,0xffff},
  280.         {NULL,0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP|COMMSEQ,0,
  281.         (APTR)&saveastext,NULL,'A',NULL,0xffff}},
  282.     edititems[]={
  283.         {&edititems[1],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  284.         (APTR)&cuttext,NULL,0,NULL,0xffff},
  285.         {&edititems[2],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  286.         (APTR)©text,NULL,0,NULL,0xffff},
  287.         {&edititems[3],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  288.         (APTR)&pastetext,NULL,0,NULL,0xffff},
  289.         {&edititems[4],0,0,0,2,HIGHNONE,0,
  290.         (APTR)&paste_barimage,NULL,0,NULL,0xffff},
  291.         {&edititems[5],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  292.         (APTR)&erasetext,NULL,0,NULL,0xffff},
  293.         {&edititems[6],0,0,0,2,HIGHNONE,0,
  294.         (APTR)&erase_barimage,NULL,0,NULL,0xffff},
  295.         {NULL,0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  296.         (APTR)&clearcliptext,NULL,0,NULL,0xffff}},
  297.     classitems[]={
  298.         {&classitems[1],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  299.         (APTR)&newclasstext,NULL,0,NULL,0xffff},
  300.         {&classitems[2],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  301.         (APTR)&editclasstext,NULL,0,NULL,0xffff},
  302.         {&classitems[3],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  303.         (APTR)&duplicateclasstext,NULL,0,NULL,0xffff},
  304.         {&classitems[4],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  305.         (APTR)&deleteclasstext,NULL,0,NULL,0xffff},
  306.         {&classitems[5],0,0,0,2,HIGHNONE,0,
  307.         (APTR)&deleteclass_barimage,NULL,0,NULL,0xffff},
  308.         {&classitems[6],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  309.         (APTR)&opentext,NULL,0,NULL,0xffff},
  310.         {&classitems[7],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  311.         (APTR)&savetext,NULL,0,NULL,0xffff},
  312.         {&classitems[8],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  313.         (APTR)&saveastext,NULL,0,NULL,0xffff},
  314.         {NULL,0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,
  315.         (APTR)&clearclasstext,NULL,0,NULL,0xffff}},
  316.     gadrowsitems[]={
  317.         {&gadrowsitems[1],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT,30,
  318.         (APTR)&gadrowstext[0],NULL,0,NULL,0xffff},
  319.         {&gadrowsitems[2],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT,29,
  320.         (APTR)&gadrowstext[1],NULL,0,NULL,0xffff},
  321.         {&gadrowsitems[3],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT,27,
  322.         (APTR)&gadrowstext[2],NULL,0,NULL,0xffff},
  323.         {&gadrowsitems[4],0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT,23,
  324.         (APTR)&gadrowstext[3],NULL,0,NULL,0xffff},
  325.         {NULL,0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT,15,
  326.         (APTR)&gadrowstext[4],NULL,0,NULL,0xffff}},
  327.     neatstuffitem={
  328.         NULL,0,0,0,0,ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT|MENUTOGGLE,0,
  329.         (APTR)&paintmodetext,NULL,0,NULL,0xffff};
  330.  
  331. struct Menu
  332.     projectmenu={NULL,8,0,0,0,MENUENABLED,NULL,projectitems},
  333.     gadrowsmenu={&neatstuffmenu,0,0,0,0,MENUENABLED,NULL,gadrowsitems},
  334.     editmenu={NULL,8,0,0,0,MENUENABLED,NULL,edititems},
  335.     classmenu={NULL,0,0,0,0,MENUENABLED,NULL,classitems},
  336.     neatstuffmenu={NULL,0,0,0,0,MENUENABLED,NULL,&neatstuffitem};
  337.  
  338. int changed,curoperation,clipcount;
  339.  
  340. USHORT
  341.     defpalettes[11][4]={
  342.         {0xaaa,0x000,0xfff,0x68b},
  343.         {0,0,0,0},
  344.         {0xba9,0x002,0xfff,0x68b},
  345.         {0x8ac,0x002,0xfff,0xfc9},
  346.         {0x8ac,0x002,0xfff,0xe97},
  347.         {0x5ba,0x002,0xeef,0x57a},
  348.         {0x9bd,0x002,0xfff,0x68b},
  349.         {0xa98,0x321,0xfee,0xfdb},
  350.         {0xccb,0x003,0xfff,0x9ab},
  351.         {0xc99,0x002,0xfee,0xb67},
  352.         {0xa96,0x002,0xfff,0x779}},
  353.  
  354.     def_dopus_palette[16]={
  355.         0xaaa,0x000,0xfff,0x05b,0xea4,0x707,0xff0,0xc20,
  356.         0xf80,0xf0f,0x963,0x0f9,0x4f3,0x000,0xfff,0x259};
  357.  
  358. char *palettenames[14];
  359.  
  360. char *fontplacenames[FONT_COUNT+1];
  361.  
  362. int fontplaceflags[]={
  363.     FFLAG_8ONLY,FFLAG_NOPROP,FFLAG_NOPROP,0,0,0,0,0,FFLAG_NOPROP,0,0,0};
  364.  
  365. int fontplacevals[]={
  366.     FONT_CLOCK,FONT_GADGETS,FONT_MENUS,FONT_NAMES,FONT_DIRS,    
  367.     FONT_GENERAL,FONT_ICONIFY,FONT_STRING,FONT_REQUEST,
  368.     FONT_SCREEN,FONT_STATUS,FONT_TEXT};
  369.  
  370. struct DOpusListView
  371.     palettelist={
  372.         2,NULL,0,0,250,56,NULL,palettenames,NULL,
  373.         DLVF_SLOW|DLVF_HIREC,8,0,0,0,0,0,0,0,0,0,0,-1,NULL},
  374.     fontplacelist={
  375.         1,NULL,0,0,176,64,NULL,fontplacenames,NULL,
  376.         DLVF_SLOW|DLVF_LEAVE|DLVF_HIREC,8,0,0,0,0,0,0,0,0,0,0,-1,&fontlistview},
  377.     fontlistview={
  378.         2,NULL,0,0,176,64,NULL,NULL,NULL,
  379.         DLVF_SLOW|DLVF_LEAVE|DLVF_HIREC,8,0,0,0,0,0,0,0,0,0,0,-1,&fontsizelistview},
  380.     fontsizelistview={
  381.         3,NULL,0,0,32,64,NULL,NULL,NULL,
  382.         DLVF_SLOW|DLVF_LEAVE|DLVF_HIREC,8,0,0,0,0,0,0,0,0,0,0,-1,NULL},
  383.     listformatlists[2]={
  384.         {1,NULL,0,0,196,56,NULL,formatnames,NULL,
  385.         DLVF_SLOW|DLVF_HIREC,8,0,0,0,0,0,0,0,0,0,0,-1,&listformatlists[1]},
  386.         {2,NULL,0,0,196,56,NULL,selectedformatnames,NULL,
  387.         DLVF_SLOW|DLVF_LEAVE|DLVF_CHECK|DLVF_TOGGLE|DLVF_HIREC,8,0,0,0,0,0,0,0,0,0,0,-1,NULL}},
  388.     iconlistview={
  389.         3,NULL,0,0,452,104,NULL,NULL,NULL,
  390.         DLVF_TTOP|DLVF_LEAVE|DLVF_HIREC,8,0,0,0,0,0,0,0,0,0,0,-1,NULL};
  391.  
  392. char
  393.     *formatnames[FORMAT_MAXNUM+1],
  394.     *selectedformatnames[FORMAT_MAXNUM+1];
  395.  
  396. int rowtrans[5]={0,1,2,3,6};
  397. struct TextFont *tfont;
  398. char
  399.     *fontdatabuf,**fontlist,*(**fontsizelist),
  400.     **noproplist,*(**nopropsizelist),
  401.     **only8list,*only8sizelist[]={"8",NULL};
  402. struct fileclass *firstclass;
  403. char classname[256];
  404. struct DOpusRemember *helpkey;
  405. char *helpbuffer;
  406. int helpsize;
  407. char currenthelpname[256];
  408.  
  409. char **fileclasslist;
  410.  
  411. char *fileclasstype[4];
  412.  
  413. char maxlength[5]={30,80,40,32,32};
  414.  
  415. extern USHORT pageflip_data1[];
  416. extern USHORT pageflip_data2[];
  417. extern USHORT dropbox_data[];
  418.  
  419. struct StringExtend stringex={NULL,{0,0},{0,0},0,NULL,NULL,{0,0,0,0}};
  420. struct Image dropboximage={0,0,83,42,2,dropbox_data,3,0,NULL};
  421.  
  422. struct DiskObject dropboxobj={
  423.     0,0, /* WB_DISKMAGIC,WB_DISKVERSION, */
  424.         {NULL,0,0,83,42,0,0,0,
  425.         (APTR)&dropboximage,NULL,NULL,NULL,NULL,NULL,NULL},
  426.     0,NULL,NULL,NO_ICON_POSITION,NO_ICON_POSITION,NULL,NULL,NULL};
  427.  
  428. void *appobject;
  429. struct AppMessage *appmsg;
  430.  
  431. unsigned char *fileview_buf;
  432. int fileview_lines,fileview_size,fileview_topline,fileview_type,fileview_oldtop;
  433. int fileview_offset,fileview_position;
  434. char *fileview_types[2];
  435. char *icontypes[3];
  436.  
  437. struct StringData stringdata;
  438.  
  439. int network;
  440.  
  441. char *ftype_funcs[]={
  442.     "AnsiRead",
  443.     "HexRead",
  444.     "LoopPlay",
  445.     "Play",
  446.     "Read",
  447.     "Show",
  448.     "User1",
  449.     "User2",
  450.     "User3",
  451.     "User4"};
  452.  
  453. short func_list_items[]={
  454.     STR_FUNCTIONLIST_ABOUT,
  455.     STR_FUNCTIONLIST_ADDICON,
  456.     STR_FUNCTIONLIST_ALARM,
  457.     STR_FUNCTIONLIST_ALL,
  458.     STR_FUNCTIONLIST_ANSIREAD,
  459.     STR_FUNCTIONLIST_AREXX,
  460.     STR_FUNCTIONLIST_ASSIGN,
  461.     STR_FUNCTIONLIST_BEEP,
  462.     STR_FUNCTIONLIST_BUFFERLIST,
  463.     STR_FUNCTIONLIST_BUTTONICONIFY,
  464.     STR_FUNCTIONLIST_CD,
  465.     STR_FUNCTIONLIST_CHECKFIT,
  466.     STR_FUNCTIONLIST_CLEARBUFFERS,
  467.     STR_FUNCTIONLIST_CLEARSIZES,
  468.     STR_FUNCTIONLIST_CLEARWIN,
  469.     STR_FUNCTIONLIST_CLONE,
  470.     STR_FUNCTIONLIST_COMMENT,
  471.     STR_FUNCTIONLIST_CONFIGURE,
  472.     STR_FUNCTIONLIST_CONTST,
  473.     STR_FUNCTIONLIST_COPY,
  474.     STR_FUNCTIONLIST_COPYAS,
  475.     STR_FUNCTIONLIST_COPYWINDOW,
  476.     STR_FUNCTIONLIST_DATESTAMP,
  477.     STR_FUNCTIONLIST_DEFAULTS,
  478.     STR_FUNCTIONLIST_DELETE,
  479.     STR_FUNCTIONLIST_DIRTREE,
  480.     STR_FUNCTIONLIST_DISKCOPY,
  481.     STR_FUNCTIONLIST_DISKCOPYBG,
  482.     STR_FUNCTIONLIST_DISKINFO,
  483.     STR_FUNCTIONLIST_DISPLAYDIR,
  484.     STR_FUNCTIONLIST_DOPUSTOBACK,
  485.     STR_FUNCTIONLIST_DOPUSTOFRONT,
  486.     STR_FUNCTIONLIST_ENCRYPT,
  487.     STR_FUNCTIONLIST_ERRORHELP,
  488.     STR_FUNCTIONLIST_ENDFUNCTION,
  489.     STR_FUNCTIONLIST_FORMAT,
  490.     STR_FUNCTIONLIST_FORMATBG,
  491.     STR_FUNCTIONLIST_GETDEVICES,
  492.     STR_FUNCTIONLIST_GETSIZES,
  493.     STR_FUNCTIONLIST_HELP,
  494.     STR_FUNCTIONLIST_HEXREAD,
  495.     STR_FUNCTIONLIST_HUNT,
  496.     STR_FUNCTIONLIST_ICONIFY,
  497.     STR_FUNCTIONLIST_ICONINFO,
  498.     STR_FUNCTIONLIST_INSTALL,
  499.     STR_FUNCTIONLIST_INSTALLBG,
  500.     STR_FUNCTIONLIST_LASTSAVED,
  501.     STR_FUNCTIONLIST_LOADCONFIG,
  502.     STR_FUNCTIONLIST_LOADSTRINGS,
  503.     STR_FUNCTIONLIST_LOOPPLAY,
  504.     STR_FUNCTIONLIST_MAKEDIR,
  505.     STR_FUNCTIONLIST_MODIFY,
  506.     STR_FUNCTIONLIST_MOVE,
  507.     STR_FUNCTIONLIST_MOVEAS,
  508.     STR_FUNCTIONLIST_NEWCLI,
  509.     STR_FUNCTIONLIST_NONE,
  510.     STR_FUNCTIONLIST_NOTIFY,
  511.     STR_FUNCTIONLIST_OTHERWINDOW,
  512.     STR_FUNCTIONLIST_PARENT,
  513.     STR_FUNCTIONLIST_PARENTLIST,
  514.     STR_FUNCTIONLIST_PLAY,
  515.     STR_FUNCTIONLIST_PLAYST,
  516.     STR_FUNCTIONLIST_PRINT,
  517.     STR_FUNCTIONLIST_PRINTDIR,
  518.     STR_FUNCTIONLIST_PROTECT,
  519.     STR_FUNCTIONLIST_QUIT,
  520.     STR_FUNCTIONLIST_READ,
  521.     STR_FUNCTIONLIST_REDRAW,
  522.     STR_FUNCTIONLIST_RELABEL,
  523.     STR_FUNCTIONLIST_REMEMBER,
  524.     STR_FUNCTIONLIST_RENAME,
  525.     STR_FUNCTIONLIST_RESCAN,
  526.     STR_FUNCTIONLIST_RESELECT,
  527.     STR_FUNCTIONLIST_RESTORE,
  528.     STR_FUNCTIONLIST_ROOT,
  529.     STR_FUNCTIONLIST_RUN,
  530.     STR_FUNCTIONLIST_SAVECONFIG,
  531.     STR_FUNCTIONLIST_SCANDIR,
  532.     STR_FUNCTIONLIST_SEARCH,
  533.     STR_FUNCTIONLIST_SELECT,
  534.     STR_FUNCTIONLIST_SETVAR,
  535.     STR_FUNCTIONLIST_SHOW,
  536.     STR_FUNCTIONLIST_SMARTREAD,
  537.     STR_FUNCTIONLIST_STOPST,
  538.     STR_FUNCTIONLIST_SWAPWINDOW,
  539.     STR_FUNCTIONLIST_TOGGLE,
  540.     STR_FUNCTIONLIST_UNICONIFY,
  541.     STR_FUNCTIONLIST_USER_FTYPE1,
  542.     STR_FUNCTIONLIST_USER_FTYPE2,
  543.     STR_FUNCTIONLIST_USER_FTYPE3,
  544.     STR_FUNCTIONLIST_USER_FTYPE4,
  545.     STR_FUNCTIONLIST_VERIFY,
  546.     STR_FUNCTIONLIST_VERSION};
  547.  
  548. struct Border *gadget_dog_sel_border,*gadget_dog_unsel_border;
  549. struct Border *gadget_sel_border,*gadget_unsel_border;
  550.  
  551. int x_off,y_off,x_bot,y_bot;
  552. char help_ok;
  553. int paint_state,paint_fg=1,paint_bg=0;
  554.  
  555. int screen_depth;
  556.  
  557. struct ColourTable screen_pens[16];
  558.  
  559. short colour_box_xy[2][16][4],colour_box_num;
  560.  
  561. struct ScreenMode *curmode;
  562. ULONG palette_backup[48];
  563. struct DOpusRemember *borderkey;
  564. short palettegad_xy[16][4];
  565. int bpg;
  566.  
  567. char *left_right_cycle[3];
  568.